// common.hlsl
//

// ---------------------------------
#ifdef WIN32
	#include <xnamath.h>

	//
	// DeviceObject_t
	//
	struct DeviceObject_t {
		XMMATRIX worldViewProjection;
	};
#else
	//
	// cbObject
	//
	cbuffer cbObject : register( b0 ) {
		matrix  g_mWorldViewProjection  : packoffset( c0 );
	}
#endif

//
// FVertex_t
//
struct FVertex_t {
#ifdef WIN32
	XMFLOAT4 xyz;
	XMFLOAT2 uv;
	XMFLOAT3 tangent;
	XMFLOAT3 binormal;
	XMFLOAT3 normal;
#else
	float4 xyz : POSITION;
	float2 uv : TEXCOORD0;
	float3 tangent : TEXCOORD1;
	float3 binormal : TEXCOORD2;
	float3 normal : TEXCOORD3;
#endif
};

#ifndef WIN32
//
// FPixel_t
//
struct FPixel_t {
	float4 xyz		: SV_POSITION;
	float2 uv		: TEXCOORD0;
	float3 tangent	: TEXCOORD1;
	float3 binormal : TEXCOORD2;
	float3 normal	: TEXCOORD3;
};

// --------------------------------------

//
// EnableDepth
//
DepthStencilState EnableDepth {
    DepthEnable = TRUE;
    DepthWriteMask = ALL;
    DepthFunc = LESS_EQUAL;
};

//
// NoBlending
//
BlendState NoBlending {
    AlphaToCoverageEnable = FALSE;
    BlendEnable[0] = FALSE;
};

// --------------------------------------

//
// SampleLinear
//
SamplerState SampleLinear {
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

// --------------------------------------
#endif